/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Christopher
 */
public interface PriorityQueue <E extends Comparable<E>>{
    /**
     * 
     * @return E
     * devuelve el primer objeto del arbol. devuelve la raiz sin eliminarla
     */
    public E getFirst();
    // pre: !isEmpty()
    // post: returns the minimum value in priority queue
    /**
     * 
     * @return E 
     * devuelve el primer objeto del arbo. devuelve la raiz elimnando el mismo
     */
    public E remove();
    // pre: !isEmpty()
    // post: returns and removes minimum value from queue
    /**
     * 
     * @param value 
     * agrega un elemento al arbol 
     */
    public void add(E value);
    // pre: value is non-null comparable
    // post: value is added to priority queue
    /**
     * 
     * @return boolean
     * devuelve verdadero si no hay elementos en el arbol
     */
    public boolean isEmpty();
    // post: returns true iff no elements are in queue
    /**
     * 
     * @return int
     * devuelve la cantidad de elementos del arbol
     */
    public int size();
    // post: returns number of elements within queue
    /**
     * elimina todos los elementos del arbol
     */
    public void clear();
    // post: removes all elements from queue
}
